import * as vuePropertyDecorator from 'vue-property-decorator';
import Vue from 'vue';
import * as ts from '@/class';
import { T_base } from '@/class/base/base';
import * as vuexClass from 'vuex-class';

class T_srv extends T_base {
    static vue = vuePropertyDecorator.Vue;
  
    static comp = vuePropertyDecorator.Component;
  
    static mixins = vuePropertyDecorator.Mixins;
  
    static prop = vuePropertyDecorator.Prop;
  
    static watch = vuePropertyDecorator.Watch;
  
    static provide = vuePropertyDecorator.Provide;
  
    static inject = vuePropertyDecorator.Inject;
  
    static injectReactive = vuePropertyDecorator.InjectReactive;
  
    static provideReactive = vuePropertyDecorator.ProvideReactive;
  
    static emit = vuePropertyDecorator.Emit;
  
    static ref = vuePropertyDecorator.Ref;
  
    static model = vuePropertyDecorator.Model;
  
    static vModel = vuePropertyDecorator.VModel;
  
    static getter = vuexClass.Getter;
  
    static state = vuexClass.State;
  
    static mutation = vuexClass.Mutation;
  
    static action = vuexClass.Action;
  
    static namespace = vuexClass.namespace;

    // 中转 在代码中写Tsrv.utils.noValue()过长
  public noValue(p: any): boolean {
    return this.utils.noValue(p);
  }
}

interface I_srv extends T_srv {}
const Tsrv = new T_srv();

const vue = vuePropertyDecorator.Vue;
export {
  I_srv,
//   ifs,
  T_srv,
  // 全局类
  ts,
  // T_srv 实例
  Tsrv,
  // 全局常量、枚举定义
//   tvs,
//   types,
  vue
};